A cache is a component that transparently stores data so that future requests for that data can be served faster. Data that is stored within a cache might be values that have been computed earlier or duplicates of original values that are stored elsewhere. If requested data is contained in the cache, which is typically referred to as a cache hit, this request can be served by simply reading the cache. Otherwise, a cache miss occurs, and the data typically has to be recomputed or fetched from its original storage location. Thus, the more requests that can be served from the cache the faster the overall system performance is expected to be. Caches have proven themselves in many areas of computing because access patterns in typical computer applications have locality of reference. References exhibit temporal locality if data is requested again that has been recently requested already. References exhibit spatial locality if data is requested that is physically stored close to data that has been requested already. A common example of a cache is a cache for a central processor, which is disposed in the computer architecture between the processor and the main memory, so that all requests from the processor go through the cache prior to reaching the main memory.
Another example of a cache is a working set cache. A working set is often considered to be the items that occupy physical memory for a process and is typically a subset of its virtual memory. Virtual memory contains all items that can be accessed by a process, and the virtual memory may include a large item referred to as a full data set. A fault occurs when the process attempts to access an item that is in virtual memory, for instance a part of the full data set, but is not already in the working set. In certain cases, such as when a full data set is large or located throughout memory, this can be costly and a working set cache is created to provide a performance benefit. In essence, the working set cache includes a subset of data items from the full data set, where the subset of data items is estimated to have a higher likelihood of being accessed. Since the working set cache contains a subset of the data from the full data set, it is smaller, and so when items can be retrieved from the cache rather than faulted in from the full data set, working set can be saved. In this way, working set caches or “working set saving caches” are typically created when they present a perceived benefit over accessing items from the full data set.